function preorderTraversal(root, ) {
    if (!root) return []
    let res = []
    function translate(root) {
        res.push(root.val) 
        if (root.left) translate(root.left)
        if (root.right) translate(root.right)
    }
    translate(root)
    return res 
}   
function postorderTraversal (root) {
    if (!root) return [] 
    let res = []
    function translate(root) {
        if (root.left) translate(root.left)
        if (root.right) translate(root.right)
        res.push(root.val) 
    }
    translate(root)
    return res
}
function inorderTraversal (root) {
    if (!root) return [] 
    let res = []
    function translate(root) {
        if (root.left) translate(root.left)
        res.push(root.val) 
        if (root.right) translate(root.right)
    }
    translate(root)
    return res
}
// 递归的三要素 1. 参数 返回值 2.终止条件 3.自己调用自己的逻辑 怎么处理
function levelOrderRe(root) {
    if (!root) return [] 
    let res = []
    let queue = [root]
    function translate(queue, res) {
        if (!queue.length) return 
        let i_arr = []
        for (let i = 0; i < queue.length; i++) {
            const item = queue.shift()
            i_arr.push(item.val)
            res.push(item.val)
            if (item.left) queue.push(item.left) 
            if (item.right) queue.push(item.right)
        }
        res.push(i_arr)
        translate(queue,res) 
    }
    translate(queue, res)
    return res
}

export{
    preorderTraversal,
    postorderTraversal,
    inorderTraversal,
    levelOrderRe
}